package main
//导包
import (
	"fmt"
	"unsafe"
	"strconv"
	"goproject01/stuinfo"
)
//定义全局变量
var (
	a = 10
	b = 20
)

func main() {
	fmt.Println("hello golong")
	var age uint8 = 26 //等价byte
	var name = "李文程"
	sex := "男"
	fmt.Println(name, age, sex)
	name1, age1 := "孙空空", 500//自动推导
	fmt.Println(name1, age1)
	fmt.Println(a, b)
	fmt.Printf("变量类型：%T,%T", name1, age1) //格式化输出 输出类型
	fmt.Println(a, unsafe.Sizeof(age1))//字符大小 
	var num1 = 314e2
	fmt.Println(num1, unsafe.Sizeof(num1))//字符大小 
	var c = "中"
	fmt.Printf("c:%v", c) //格式化输出 输出值
	fmt.Println()
	fmt.Println("aaaaaa\nbbbbbb")//换行
	fmt.Println("\"转移\"")
	//字符串输出  默认""    bool默认false
	s1 := `
	import (
	"fmt"
	"unsafe"
	)
	`
	fmt.Println(s1)

	//转字符串类型 (1)
	bool1 := false
	switch_s1 := fmt.Sprintf("%t",bool1)  //%t  代表bool1的类型  
	fmt.Printf("switch_s1对应类型是：%T , switch_s1 = %q \n",switch_s1,switch_s1)
	
	//字符串类型转其他 (2)
	// bool2,_ := strconv.ParseBool(switch_s1) 可以忽略
	bool2,err2 := strconv.ParseBool(switch_s1) 
	if err2!= nil {
		fmt.Printf("错误：%T , err = %v \n",err2,err2)
	} else {
		fmt.Printf("bool2对应类型是：%T , bool2 = %v \n",bool2,bool2)
	}

	//指针
	fmt.Println(&bool2)
	var ptr1 *bool = &bool2
	fmt.Println(ptr1,"ptr1指向的值是：",*ptr1)

	//引用外部文件(go env -w GO111MODULE=off)
	fmt.Println(stuinfo.Stu1No)

	//键盘输入(1)
	var name2 string
	var score2  float64
	fmt.Println("请输入名字和成绩：")
	fmt.Scanln(&name2,&score2)
	fmt.Printf("你的名字是：%v , 你的成绩是: %v ",name2,score2)
	
	//键盘输入(2)
	var name3 string
	var age3 int
	var score3  float64
	var isVIP3  bool
	fmt.Println("请输入名字,年龄，成绩，是否VIP，以空格分隔")
	fmt.Scanf("%s %d %f %t",&name3,&age3,&score3,&isVIP3)
	fmt.Printf("你的名字是：%v ,你的年龄是: %v, 你的成绩是: %v ，是否VIP: %v",name3,age3,score3,isVIP3)
}
